package info;

import java.util.Date;
import java.util.List;
import users.ProgramChair;

/**
 * The conference is a meeting by MSEE about a particular topic, which
 * may be further divided into categories of interest.  Experts and
 * amateurs meet up to discuss the topics and educate others.
 * <P>
 * While the size of a conference varies, and a different number of roles
 * are assigned, for the purposes of this software only Authors and
 * Program Chairs are known.  There can only be one Program Chair per
 * conference.
 * <P>
 * The review process is very deadline-driven, and thus a conference has
 * its own set of deadlines.  Once a Program Chair is assigned, he starts
 * the process by sending out a "Call for papers", which advertises for
 * manuscript submissions to enrich the conference.  Submissions must
 * happen before the submission deadline.  Additional deadlines include
 * the review deadline by which all reviews must be submitted, a
 * decision deadline by which the Program Chair must make a decision to
 * accept or reject all manuscript submissions, and a final editing
 * deadline by which authors of accepted manuscripts make final
 * adjustments and changes.  Once the process is complete, the Program
 * Chair publishes the manuscripts that were accepted, and the conference
 * can be under way as normal.
 * 
 * @author Aaron Chen
 * @version skeleton
 */
public class Conference {

  /** The identification number of the conference. */
  private long my_id;
  
  /** The name of the conference. */
  private String my_title;
  
  /** The date the conference is live. */
  private Date my_hosting_date;
  
  /** The name of the venue that the conference takes place in. */
  private String my_hosting_venue;
  
  /** Informative and miscellaneous info associated with the conference. */
  private String my_info;
  
  /** The categories that this conference can be subdivided into. */
  private List<String> my_categories;
  
  /** The Program Chair responsible for this conference. */
  private ProgramChair my_program_chair;
  
  /** The list of manuscripts that were accepted and published by the
   * Program Chair. */
  private List my_published_manuscripts;

  
  /** The deadline by which prospective Authors must submit their
   * manuscripts for review. */
  private Date my_submission_deadline;
  
  /** The deadline by which reviews for submitted manuscripts must be
   * completed. */
  private Date my_review_deadline;
  
  /** The deadline by which the Program Chair must make an acceptance
   * decision on submitted manuscripts. */
  private Date my_decision_deadline;
  
  /** The deadline by which Authors can make final changes to their
   * accepted manuscripts. */
  private Date my_final_submission_deadline;

  
  public long getID() {
    return my_id;
  }
  public String getTitle() {
    return my_title;
  }
  public Date getHostingDate() {
    return my_hosting_date;
  }
  public String getHostingVenue() {
    return my_hosting_venue;
  }
  public String getInfo() {
    return my_info;
  }
  public List<String> getCategories() {
    return my_categories;
  }
  public ProgramChair getProgramChair() {
    return my_program_chair;
  }
  public List getPublishedManuscripts() {
    return my_published_manuscripts;
  }

  public Date getSubmissionDeadline() {
    return my_submission_deadline;
  }
  public Date getReviewDeadline() {
    return my_review_deadline;
  }
  public Date getDecidionDeadline() {
    return my_decision_deadline;
  }
  public Date getFinalSubmissionDeadline() {
    return my_final_submission_deadline;
  }

}
